#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "stu_db.h"
#include "SYS_define.h"

// 定义辅助函数来格式化时间戳为指定格式的字符串
void format_datetime(time_t time_val, char *buffer, size_t buffer_size) {
    struct tm *tm_info = localtime(&time_val);
    strftime(buffer, buffer_size, "%Y-%m-%d %H:%M:%S", tm_info);
}
int create_stu(MYSQL *conn);
int delete_stu(MYSQL *conn,int id);
int update_stu(MYSQL *conn, int id);

int main() {
    test();
    MYSQL *conn; // 创建一个指向MYSQL结构的指针，用于存储连接信息
    MYSQL_RES *res; // 用于存储查询结果集
    MYSQL_ROW row; // 用于存储从结果集中取出的一行数据

    StuRecord *records = NULL;
    unsigned long num_records = 0;


    char *server = "127.0.0.1"; // MySQL服务器地址
    char *user = "root"; // 登录用户名
    char *password = "root"; // 用户密码
    char *database = "test"; // 要连接的数据库名


    // 尝试连接到数据库
    conn = mysql_init_connection(server, user, password, database);
    if (conn == NULL) {
        fprintf(stderr, "Failed to connect to database\n");
        exit(1);
    }

    printf("Connected to MySQL database!\n");

    // 执行查询并获取结果
    res = get_query_result(conn, "show tables");
    if (res != NULL) {
        printf("MySQL Tables in %s database:",database);
        // 输出每一行的数据
        while ((row = mysql_fetch_row(res)) != NULL)
            printf("%s|", row[0]);
        putchar('\n');
    }
    // 执行查询并获取结果
    if (fetch_stu_records(conn, &records, &num_records) != 0) {
        fprintf(stderr, "Failed to fetch records from stu table\n");
        cleanup_and_close(conn, NULL);
        return EXIT_FAILURE;
    }

    // 输出从stu表中获取的数据
    for (unsigned long i = 0; i < num_records; ++i) {
        printf("ID: %d, Create Time: %s, Name: %s\n",
               records[i].id,
               records[i].create_time, 
               records[i].name);
    }
 
    // 清理资源
    free(records);
    // create_stu(conn);
    // delete_stu(conn,28);
    update_stu(conn,29);
    
    // 关闭连接
    cleanup_and_close(conn, res);

    return EXIT_SUCCESS;
}

int create_stu(MYSQL *conn){
    // 创建一个新的学生记录
    StuRecord new_record;
    new_record.id = 0; // 如果ID是自增的，可以设置为0或省略
    time_t now;
    time(&now);
    format_datetime(now, new_record.create_time, sizeof(new_record.create_time)); // 设置当前时间为创建时间
    strcpy(new_record.name, "张三"); // 设置名字

    // 插入新的学生记录
    if (insert_stu_record(conn, &new_record) != 0) {
        fprintf(stderr, "Failed to insert record into stu table\n");
        cleanup_and_close(conn, NULL);
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;

}

int delete_stu(MYSQL *conn,int id){
    // 删除刚刚插入的学生记录
    if (delete_stu_record(conn, id) != 0) {
        fprintf(stderr, "Failed to delete record from stu table\n");
        cleanup_and_close(conn, NULL);
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}

int update_stu(MYSQL *conn, int id){
    // 更新刚刚插入的学生记录
    // 修改刚刚插入的学生记录
    // 假设我们已经知道新插入记录的ID（例如通过查询或其他方式获得）
    // 这里假设ID为1
    StuRecord update_record;
    update_record.id = id; // 使用之前插入的ID
    time_t update_time;
    time(&update_time);
    format_datetime(update_time, update_record.create_time, sizeof(update_record.create_time)); // 设置更新时间为当前时间（UTC）
    strcpy(update_record.name, "李四"); // 更新名字

    if (update_stu_record(conn, &update_record) != 0) {
        fprintf(stderr, "Failed to update record in stu table\n");
        cleanup_and_close(conn, NULL);
        return EXIT_FAILURE;
    }
    return EXIT_SUCCESS;
}